/*
 * $Id: $
 */
package org.rcgwt.client.ui.grid.internal.model;

/**
 * 
 * @author Olivier Oeuillot (latest modification by $Author: $)
 * @version $Revision: $ $Date: $
 */
public interface IElementModelDelta<T extends IElementModel> {
    int STATE_MASK_CHANGED = 0x0001;

    int CONTENT_CHANGED = 0x0002;

    T getModelElement();

    <C extends IElementModel> IElementModelDelta<C> getChildDelta(C modelElement);

    IElementModelDelta< ? extends IElementModel>[] listChildrenDeltas();

    int getKind();

    void performStateMaskChanged(int oldState, int newState, int mask, int bits);

    void performContentChanged();

    int getOldStateMask();

    int getMask();

    int getBits();

    boolean hasStateMaskChanged();

    boolean hasContentChanged();
    
    String toString(String prefix);
}
